<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2021/12/16
 * Time: 9:57
 */
declare(strict_types=1);
namespace  app\common\business;
use app\common\lib\ClassArr;
use app\common\lib\sms\Alsms;
use think\Cache;
use app\common\lib\Num;

class Sms{
    public static function sendCode(string $phoneNumber,int $len,string $type="ali") : bool
    {
        //生成验证码 4位 6位
        $code = Num::getCode($len);

//        $sms = Alsms::sendCode($phoneNumber,$code);
        //工厂模式 解决耦合性的问题，各平台sms短信对象
//        $type = ucfirst($type);//转换首字母大写
//        $class = "app\common\lib\sms\\".$type."Sms";
//        $sms = $class::sendCode($phoneNumber,$code);
        //工厂模式深层封装
        $classStats = ClassArr::smsClassStat();//类型
        $classObj = ClassArr::initClass($type,$classStats,[],false);
        $sms = $classObj::sendCode($phoneNumber,$code);
        if($sms){
            //需要把短信验证码保存到redis里面  并且需要给一个失效时间
            // 1.php环境是否有 redis扩展
            //2 redis 服务
            // 保存到redis里面 参数（名称+手机号，验证码，保存时间）
            \cache(config('redis.code_pre').$phoneNumber,$code,config('redis.code_expire'));
        }
        return $sms;
    }
}